<?php
/**
 * Application level Controller
 *
 * This file is application-wide controller file. You can put all
 * application-wide controller-related methods here.
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.Controller
 * @since         CakePHP(tm) v 0.2.9
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */

App::uses('Controller', 'Controller');

/**
 * Application Controller
 *
 * Add your application-wide methods in the class below, your controllers
 * will inherit them.
 *
 * @package		app.Controller
 * @link		http://book.cakephp.org/2.0/en/controllers.html#the-app-controller
 */
class AppController extends Controller {
	public $components = array('DebugKit.Toolbar', 'Auth', 'Session');
	
	function beforeFilter() {
    	parent::beforeFilter();

    	if (isset($this->Auth)) {
    		$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login', 'admin' => false);
	        $this->Auth->logoutRedirect = '/';
	        $this->Auth->loginRedirect = '/';
	        $this->Auth->authorize = 'Controller';

	        if(!isset($this->params['prefix'])) {
	        	$this->Auth->allow(); 
	        }
    	}
    	
		if (!isset($this->Estacao))		
			$this->loadModel('Estacao');

		$estacoes = $this->Estacao->find('all');

		$permissions['admin'] = $this->hasPermission('admin');
		$permissions['pesquisador'] = $this->hasPermission('pesquisador');
		$permissions['colaborador'] = $this->hasPermission('colaborador');

		$this->set('estacoesMenu', $estacoes);
		$this->set('hasPermission', $permissions);
		$this->set('userLogged', $this->Auth->user());
	}

	public function isAuthorized($user) {
		if ($this->hasPermission($this->params['prefix'], $user))
			return true;
		else {
			$this->Session->setFlash('Acesso negado!');

	    	return false;
		}
	}

	private function hasPermission($type, $user=null) {
		if ($user == null) {
			$user = $this->Auth->user();
		}

		if (!isset($user['tipo']))
	    	return false;

	    if ($user['tipo'] === 'admin')
	        return true;
	    
	    if (($type != 'admin') && ($user['tipo'] == 'colaborador'))
			return true;


	    if ($type == $user['tipo'])
	    	return true;
	    else
	    	return false;
	}
}
